package Base.InnerClassTest;


/**
 * 内部类
 * 分类：成员内部类 vs 局部内部类（方法内，代码块内，构造器）
 */
public class InnerClassTest {
    public static void main(String[] args) {

        // 静态内部类创建实例
        final Person.heart heart = new Person.heart();
        heart.fire();

        // 非静态成员创建实例
        final Person person = new Person();
        final Person.kidney kidney = person.new kidney();
        kidney.water();


    }


}

class Person{

    public void eat(){
        System.out.println("外部函数：eat函数被调用！！");
    }

    // 静态成员内部类
    static class heart{
    int many;

    public void fire(){
        System.out.println("我是心；主火！！");
    }

    }

    // 非静态成员内部类
    final class kidney{
        String name;
        public void water(){
            System.out.println("我是肾：主水！！");
            // 调用了外部类
            Person.this.eat();
        }

    }

    public void method(){
        // 局部内部类
        class AA{

        }
    }

    {
        class BB{

        }
    }

}
